package logica;

import java.util.List;
import java.util.UUID;

import datos.*;
import datos.interfaces.*;

public class GestorTasaciones {
	public boolean registrarSolicitudTasacion(Usuario user,String marca,String modelo,String descripcion,String imagen,String estado,Integer tasacion, String categoriaID){
		Solicitud sol=new Solicitud();
		Objeto obj=new Objeto();
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		IObjetoDAO oDAO=new JDBCObjetoDAO();
		String solicitudID=UUID.randomUUID().toString();
		String objetoID=UUID.randomUUID().toString();
		
		Almacen al=new Almacen();
		al.setAlmacenID("58e0492a-c140-4702-8395-b95d4e8d4376");
		obj.setAlmacen(al);
		Categoria cat=new Categoria();
		cat.setCategoriaID(categoriaID);
		obj.setCategoria(cat);
		obj.setDescripcion(descripcion);
		obj.setEstado(estado);
		obj.setImagen(imagen);
		obj.setMarca(marca);
		obj.setModelo(modelo);
		obj.setObjetoID(objetoID);
		obj.setValor(0);
		obj.setVendido("-1");
		oDAO.insertarObjeto(obj);
		
		sol.setAdministrador(null);
		sol.setEstadoSolicitud("Pendiente de tasacion");
		sol.setFecha(new java.sql.Date(new java.util.Date().getTime()));
		sol.setSolicitudID(solicitudID);
		sol.setUsuario(user);
		sol.setValorTasacion(tasacion);
		sol.setObjeto(obj);
		sDAO.insertarSolicitud(sol);
		
		return true;
	}
	
	public List<Solicitud> obtenerSolicitudesPendienteTasacion(){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		List<Solicitud> s1=sDAO.obtenerSolicitudes("Pendiente de tasacion");
		List<Solicitud> s2=sDAO.obtenerSolicitudes("Tasacion rechazada");
		s1.addAll(s2);
		return s1;
	}
	
	public List<Solicitud> obtenerSolicitudesPendientesRespuesta(){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		return sDAO.obtenerSolicitudes("Pendiente aceptar tasacion");
	}
	
	public List<Solicitud> obtenerSolicitudesAceptadas(){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		return sDAO.obtenerSolicitudes("Tasacion aceptada");
	}
	
	public List<Solicitud> obtenerSolicitudesEnvio(){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		List<Solicitud> s1=sDAO.obtenerSolicitudes("Para envio");
		List<Solicitud> s2=sDAO.obtenerSolicitudes("Enviado");
		s1.addAll(s2);
		return s1;
	}
	
	public List<Solicitud> obtenerSolicitudesPendienteTasacionUsuario(String usuarioID){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		return sDAO.obtenerSolicitudesUsuario("Pendiente aceptar tasacion",usuarioID);
	}
	
	public boolean tasarObjeto(String solicitudID,Integer valor){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		sDAO.modificarValorSolicitud(valor, solicitudID);
		sDAO.modificarEstadoSolicitud(solicitudID, "Pendiente aceptar tasacion");
		return true;
	}
	
	public boolean rechazarTasacion(String solicitudID){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		sDAO.modificarEstadoSolicitud(solicitudID, "Tasacion rechazada");
		return true;
	}
	
	public boolean aceptarTasacion(String solicitudID){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		sDAO.modificarEstadoSolicitud(solicitudID, "Tasacion aceptada");
		Solicitud aux=sDAO.obtenerSolicitud(solicitudID);
		
		IObjetoDAO oDAO=new JDBCObjetoDAO();
		oDAO.modificarValorObjeto(aux.getObjeto().getObjetoID(),aux.getValorTasacion());
		return true;
	}
}
